var long = {};
long.install = function (Vue, options) {
  Vue.prototype.$long = longMain;
}

//调用方式
//console.log(this.$long.str.czgjc("随便一段文本",["关键词"]));
var longMain = {
	//01.常用字符串方法 ------------------------------ 
	str:{
		czgjc:function(text,wz){
			// 中文 查找关键字 czgjz
			// 查找文本是否包含某个关键词 支持多个词 返回一个数组 ------------------------------
			// 使用方法:str.czgjc("随便一段文本",["关键词"])
			var str = [];
			// 查找关键词
			for(var i of wz){
				if(text.indexOf(i)!=-1){
					str.push({
						"当前查找的关键词是":i,
						"关键词出现的位置":text.indexOf(i)
					})
				}else{
					str.push({
						"当前查找的关键词是":i,
						"关键词出现的位置":"关键词不存在！"
					})
				}
			}
			// 如果没有查找到关键词 返回fales 如果找到了返回找到的词和出现的位置
			if(str.length == 0){
				return "未输入关键词!";
			}else{
				return str;
			}
		},
		ljzfc:function(){
			// 连接字符串 支持任意个字符串连接 ------------------------------
			// 使用方法:str.ljzfc("你","好","吗")
			var arr = Array.from(arguments);
			//join中的是分隔符 传入, 结果为a,b 如果不传 结果为ab
			return arr.join("");
		},
		fgzfc:function(text,fh){
			// 通过标识符把字符串分割成数组 ------------------------------
			// str.fgzfc("你好,在家吗,要去哪里",",")
			// split 本身把字符串通过一个标识符拆分成数组,通过把目标文字传进去分割再减1就是出现次数
			return text.split(fh)
		},
		thwz:function(text,wz,th){
			// 过滤关键词 支持多个词替换 ------------------------------
			// 使用方法:str.thwz("我草你大爷的",["我草","大爷"],"*")
			// text = 你要查找替换文字的文本 wz=要过滤的词 数组 th = 你要替换成的字
			var newStr;
			for(var i = 0; i < wz.length; i++){
				if(text.indexOf(wz[i]) != -1){
					var regexp = '/\\'+wz[i]+'/g';
					text = text.replace(eval(regexp),th);
				}
			}
			newStr = text;
			return newStr;
		},
		dxxzh:function(str,type){
			// 字符串大小写转换 ------------------------------
			// 使用方法:str.dxxzh("abcDEFG","小写")
			// str=要转换的文字 rype=转换方式 xx转换成小写 dx转换成大写
			console.log("转换方式为:"+type);
			if(type == "小写")
			//转换为小写
			return str.toLocaleLowerCase();
			else if(type == "大写")
			//转换为大写
			return str.toUpperCase();
		},
		zdwz:function(text,start,end){
			// 获取指定位置的字符串 ------------------------------
			// 使用方法:str.zdwz("abcDEFG",0,1)
			// text = 要截取的文字 start = 开始位置 end = 结束位置
			return text.slice(start,end)
		},
		zdwzh:function(str){
			// 获取指定文字后面的文字 ------------------------------
			// 譬如需要获取.png 这种的后缀
			// var str = "test.index.img.png";
			// 使用方法:str.zdwzh("test.index.img.png")
			var index = str.lastIndexOf("\.");
			var data = str.substring(index + 1,str.length);
			return data;
		},
		cfcs:function(text,str){
			// 判断一个词在文本中出现的次数 ------------------------------
			// 使用方法:str.cfcs("你好你好我想知道重复次数","你好")
			return text.split(str).length-1;
		},
		qdkg:function(text,type){
			// 去除字符串空格 ------------------------------
			// 使用方法:str.qdkg("mima shi 11250","sy")
			if(type = "所有") return text.replace(/\s*/g, '');
			if(type = "两头") return text.replace(/^\s*|\s*$/g, '');
			if(type = "头部") return text.replace(/^\s*/g, '');
			if(type = "尾部") return text.replace(/\s*$/g, '');
		},
		glzf:function(text){
			// 过滤危险字符 ------------------------------
			// 使用方法:str.glzf("asd<div><stript>$.ajax</script></div>asdiag")
			var pattern=/[`~!@#$^&*()=|{}':;',\\\[\]\.<>\/?~！@#￥……&*（）——|{}【】'；：""'。，、？]/g;
			return text.replace(pattern,"");
		},
		slh:function(text){
			//超过200个字后省略并加...
			//str.slh("内容超过200字")
			var txt = text.substring(0,200) + "...";
			return txt;
		}
	},
	//02.常用数学方法 ------------------------------
	num:{
		zhsz:function(str){
			// 把字符串转化为数字 ------------------------------
			// number和parseInt/parseFloat的区别再于,它还可以转化除了字符串以外的其他类型的数据
			// 如果你传入的不是纯数字 比如"123bba" 则会返回NaN
			// 使用方法:num.zhsz("123456")
			return Number(str)
		},
		sj:function(fw){
			// 生成一个0-指定范围之内的随机数 ------------------------------
			// Math.random() 随机生成0-1之间的小数
			// 使用方法:num.sj(100)
			return Math.round(Math.random()*fw)
		},
		sjnumstr:function(len){
			// 生成32位随机字符和数字组合 ------------------------------
			// 默认是32位 你也可以传入你想要的位数
			// num.sjnumstr(32)
			len = len || 32;
			var chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
			var maxPos = chars.length;
			var pwd = '';
			for (var i=0; i<len;i++) {
				pwd += chars.charAt(Math.floor(Math.random() * maxPos));
			}
			return pwd;
		},
		qdxs:function(num){
			// 不四舍五入直接去掉小数 ------------------------------
			// 例子:num.qdxs(20.113)
			return parseInt(num)
		},
		xssswr:function(number,ws){
			// 保留小数后两位并且四舍五入 ------------------------------
			// 比如10.11 或者 11.5 传入参数0 返回 12
			// 解决js小数计算不精确的问题 js中0.1+0.2 = 0.30000000000000004
			// toFixed方法 es6中准备为处理js小数四舍五入的方法
			// num.sswr(20.188819,2)
			return number.toFixed(ws)
		},
		dj:function(arr,type){
			// 对数组值进行叠加或者叠减 ------------------------------
			// 常用于计算购物车总价等
			// reduce 中接受一个函数 类似于foreach那个效果 同理它也可以做叠减操作,但是你要注意如果是叠减,会用数组的第一个去减后面的所有
			// num.dj([10,8,1,1],"叠加")
			if(type=="叠加"){
				var jia = function(ordVar,newVar){
					return ordVar + newVar;
				}
				return arr.reduce(jia)
			}else if(type=="叠减"){
				var jian = function(ordVar,newVar){
					return ordVar - newVar;
				}
				return arr.reduce(jian)
			}
		}
	},
	//03.常用数组方法 ------------------------------
	arr:{
		//1.判断和转换 ------------------------------------------------------------------------------------------
		pd:function(arr){
			//判断元素是否为数组  ------------------------------
			//原理其实就是查看protottype,如果是array就是数组
			//arr.pd([1,2,3])
			//Object.prototype.toString.call() es5
			return Array.isArray(arr);
		},
		zh:function(arr){
			//把类数组转化为真正的数组  ------------------------------
			//比如转化arguments 类数组不是真正的数组,但是它也具备数组的length属性像数组一样调用里面的index值
			//arr.zh(arr)
			return Array.from(arr)
		},
		ljsz:function(){
			// 连接数组  ------------------------------
			// 通过arguments 可以连接多个你传入的数组 (注意arguments是类数组,并不是真正的数组,这点可以通过protottype看出来,类数组是一个object)
			// 类数组在使用上和数组没有区别,只不过它没有array的方法,比如splice,concat等
			// 注意在箭头函数中没有arguments
			// arr.ljsz([1,2,3],[6,7,8,9,10])
			var newArr = [];
			for(var i=0;i<=arguments.length-1;i++){
				//注意concat并不会返回一个新的数组，所以你必须给它赋值
				newArr = newArr.concat(arguments[i])
			}
			return newArr;
		},
		hbzfc:function(arr,bs){
			// 数组中的项合并成一个字符串  ------------------------------
			// arr.hbzfc([1,2,3,4,5],".") 结果 1.2.3.4.5
			return arr.join(bs)
		},
		//2.删除操作 ------------------------------------------------------------------------------------------
		sc:function(arr,type,wz){
			//删除数组中的内容 ------------------------------
			if(type=="最后一项"){
				//删除最后一项
				//arr.sc([1,2,3,4,5],"最后一项")
				var newArr = arr;
				//console.log(arr.pop())
				newArr.pop();
				//注意pop方法并不会返回新数组,只会返回删除的是哪一个内容,所以这里需要先用新变量获取一下原始数据
				return newArr;
			}else if(type=="第一项"){
				//删除第一项
				//arr.sc([1,2,3,4,5],"第一项")
				var newArr = arr;
				newArr.shift()
				//shift方法跟pop一样
				return newArr;
			}else if(type=="指定内容"){
				//删除指定位置的内容
				//比如 arr.sc([1,2,3,4,5],"指定内容",[0,3]) 返回 [4,5]
				//splice(开始的位置，数量)
				var newArr = arr;
				newArr.splice(wz[0],wz[1]); //这里我删除的是第一个
				return newArr;
			}
		},
		//3.增加 ------------------------------------------------------------------------------------------
		tj:function(arr,type,nr){
			//在数组中添加内容 ------------------------------
			if(type=="开头添加"){
				//可以添加多个内容,如果只有1个就直接添加,如果是多个(数组)就循环添加
				//添加一个arr.tj([1,2,3,4,5],"开头添加",1)
				//添加多个arr.tj([1,2,3,4,5],"开头添加",[8,9])
				if(Array.isArray(nr)){
					for(var i=0;i<=nr.length-1;i++){
						arr.unshift(nr[i])
					}
					return arr;
				}else{
					arr.unshift(nr)
					return arr;
				}
			}else if(type=="末尾添加"){
				//向末尾添加内容 ------------------------------
				//push方法不会直接返回新数组,而是返回新数组的长度,所以这里需要先用新变量获取一下原始数据
				//arr.tj([1,2,3,4,5],"末尾添加",24)
				//arr.tj([1,2,3,4,5],"末尾添加",[7,8,9])
				var newArr = arr;
				if(Array.isArray(nr)){
					for(var i=0;i<=nr.length-1;i++){
						newArr.push(nr[i])
					}
					return newArr;
				}else{
					newArr.push(nr);
					return newArr;
				}
			}else if(type=="替换内容"){
				//替换指定位置的内容 ------------------------------
				//比如 arr.tj([1,2,3,4,5],"替换内容",[0,1,"hello world"]) 返回 ["hello world", 2, 3, 4, 5]
				//splice(开始的位置，数量，替换的内容)
				var newArr = arr;
				newArr.splice(nr[0],nr[1],nr[2]);
				return newArr;
			}else if(type=="插入内容"){
				//在指定位置添加内容 ------------------------------
				//其实这个方法就是splice的一个变换用法,删除0个元素,然后插入新的元素即可！
				//比如 arr.tj([1,2,3,4,5],"插入内容",[2,29]) 
				//splice(开始的位置，数量，替换的内容)
				var newArr = arr;
				newArr.splice(nr[0],0,nr[1]);
				return newArr;
			}
		},
		//4.修改操作 ------------------------------------------------------------------------------------------
		xg:function(arr,type,index1,index2){
			//4.1交换两个元素位置
			//这里主要利用splice方法操作,因为splice方法作用是,用新值替换旧值,并且返回旧值,它返回的并不是新数组
			//所以这里可以直接让arr[index1]就是第一个值等于splice的值即可
			if(type=="交换位置"){
				//使用示例
				//arr.xg([1,2,3,4,5],"交换位置",0,1)  //[2,1,3,4,5]
				arr[index1] = arr.splice(index2,1,arr[index1])[0];
				return arr;
			}else if(type=="置顶"){
				//4.2把指定位置的元素置顶
				//使用示例
				//arr.xg([1,2,3,4,5],"置顶",3)  //[4,1,2,3,5]
				if(index1!=0){
				    arr.unshift(arr.splice(index1,1)[0]);
					return arr;
				}
			}else if(type=="向上移动一格"){
				//4.3向上移动一格
				//使用示例
				//arr.xg([1,2,3,4,5],"向上移动一格",3)  //[1, 2, 4, 3, 5]
				if(index1!=0&&index1<=arr.length-1){
				    arr[index1] = arr.splice(index1-1,1,arr[index1])[0];
					return arr;
				}else{
					//如果已经是第一个了,则移动到尾部
					//arr.push(arr.shift());
					return "移动对象位置错误或者已经是第一位了！";
				}
			}else if(type=="向下移动一格"){
				//4.3向下移动一格
				//使用示例
				//arr.xg([1,2,3,4,5],"向下移动一格",3)  //[1, 2, 4, 5, 4]
				if(index1!=arr.length-1&&index1<=arr.length-1){
					arr[index1] = arr.splice(index1+1,1,arr[index1])[0];
					return arr;
				}else{
					//如果已经是最后一个了,则移动到第一个
					//arr.unshift(arr.splice(index1,1)[0]);
					return "移动对象位置错误或者已经是第最后一位了！";
				}
			}else if(type=="覆盖数组"){
				//使用一个数字对数组进行覆盖
				//arr.xg([1,2,3,4,5],"覆盖数组",3) 结果:[3, 3, 3, 3, 3]
				return arr.fill(index1)
			}
		},
		//5.查找操作 ------------------------------------------------------------------------------------------
		cz:function(arr,type){
			//查询数组中的最大值或者最小值 ------------------------------
			//通过sort排序后取第一个和最后一个来判断最大值和最小值
			//arr.cz([1,2,3,4,5],"最小值")
			arr.sort(function(a, b){
				return a - b
			});
			if(type=="最大值"){
				//return Math.max.apply(null, arr);
				return arr[arr.length-1]
			}else if(type="最小值"){
				//return Math.min.apply(null, arr);
				return arr[0]
			}
		},
		sfbh:function(arr,tjFun){
			//查看数组中是否包含某个值 ------------------------------
			//includes可以直接判断是否存在这个值,但是不能返回所在位置,也不能设置条件
			arr.sfbh([1,2,3,5,6],2)
			if(arr.includes(val))
			    return true;
			else
			    return false;
		},
		sfbhindex:function(arr,val){
			//查看数组中是否包含某个值 返回下标 ------------------------------
			//arr.sfbhindex([1,2,3],1)
			return arr.indexOf(val);
		},
		sfbhtj:function(){
			// 根据某个条件查找数组中的值 ------------------------------
			// find函数可以查找数组中是否存在某个值,并且还可以设置条件函数
			// 示例 数组
			// let numbers = [12, 5, 8, 130, 44];
			// let result = numbers.find(item => {
			//     return item > 8;
			// });
			// console.log(result) //12
			// 
			// 示例 对象
			// let items = [
			//     {id: 1, name: 'something'},
			//     {id: 2, name: 'anything'},
			//     {id: 3, name: 'nothing'},
			//     {id: 4, name: 'anything'}
			// ];
			// let item = items.find(item => {
			//     return item.id == 3;
			// });
			// console.log(item) //{id:3,name:"nothing"}
			
			// 根据某个条件查找数组中的值的下标 ------------------------------
			// 使用findIndex方法即可
			// var numbers = [12, 5, 8, 130, 44];
			// var result = numbers.findIndex(item => {
			//     return item == 8;
			// });
			// console.log(result) //2
		},
		//6.排序操作 ------------------------------------------------------------------------------------------
		px:function(arr,type,pxname){
			//数组排序 ------------------------------
			//sort是最强大的排序方法 sort中接收的函数是比值函数
			//原理就是 a-b 会得到一个值 比如 1-2=-1 它会拿这个-1 去排序 如果下一个是 2-1=1 那么 -1就会排在1的前面(简单来说就是对a-b获得的负值)
			
			// 实战用法
			// var cars = [
			// 	{type:"Volvo", year:2016},
			// 	{type:"Saab", year:2001},
			// 	{type:"BMW", year:2010}
			// ];
			// cars.sort(function(a, b){return a.year - b.year});
			
			if(type=="升序"){
				//4.1升序排列 ------------------------------
				if(pxname===undefined){
					arr.sort(function(a, b){
						return a - b
					});
					return arr;
				}else{
					//如果传入的对象是一个json 那么我们需要通过json的key去获取值 它有一个简便的写法是这样 json[key]
					arr.sort(function(a, b){
						return a[pxname] - b[pxname]
					});
					return arr;
				}
			}else if(type=="降序"){
				//4.2降序排列 ------------------------------
				if(pxname===undefined){
					arr.sort(function(a, b){
						return b - a
					});
					return arr;
				}else{
					arr.sort(function(a, b){
						return b[pxname] - a[pxname]
					});
					return arr;
				}
			}else if(type=="随机排序"){
				//4.3随机排列 ------------------------------
				arr.sort(function(a, b){
					return 0.5 - Math.random()
				}); 
				return arr;
			}else if(type=="反转排列"){
				//4.4 反转当前排序 ------------------------------
				return arr.reverse()
			}
		}
	},
	//04.常用url方法 ------------------------------ 
	url:{
		geturl:function(name){
			//获取url中传递的参数 ------------------------------ 
			//url.get("id")
			var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
			var r = window.location.search.substr(1).match(reg);
			if (r != null) {
				return unescape(r[2]);
			}else{
				return null;
			}
		},
		session:function(type,key,val){
			//储存数据到sessionStorage ------------------------------ 
			if(type=="存单条"){
				//url.session("存单条","name","dangyunlong")
				sessionStorage.setItem(key,val);
				return "储存成功！"
			}else if(type=="读单条"){
				//url.session("读单条","name")
				return sessionStorage.getItem(key)
			}else if(type=="删单条"){
				//url.session("删单条","name")
				sessionStorage.removeItem(key);
				return "删除单条成功！"
			}else if(type=="删所有"){
				//url.session("删所有")
				sessionStorage.clear();
				return "删除所有成功！"
			}else if(type=="存json"){
				// 示例
				// var json = {
				// 	name:"dangyunlong",
				// 	age:31
				// }
				// console.log(url.session("存json","json",json));
				sessionStorage.setItem(key,JSON.stringify(val));
				return "储存json成功！"
			}else if(type=="读json"){
				//url.session("读json","json")
				return JSON.parse(sessionStorage.getItem(key));
			}
		},
		local:function(type,key,val){
			//储存数据到localStorage ------------------------------ 
			if(type=="存单条"){
				//url.local("存单条","name","dangyunlong")
				localStorage.setItem(key,val);
				return "储存成功！"
			}else if(type=="读单条"){
				//url.local("读单条","name")
				return localStorage.getItem(key)
			}else if(type=="删单条"){
				//url.local("删单条","name")
				localStorage.removeItem(key);
				return "删除单条成功！"
			}else if(type=="删所有"){
				//url.local("删所有")
				localStorage.clear();
				return "删除所有成功！"
			}else if(type=="存json"){
				// 示例
				// var json = {
				// 	name:"dangyunlong",
				// 	age:31
				// }
				// console.log(url.local("存json","json",json));
				localStorage.setItem(key,JSON.stringify(val));
				return "储存json成功！"
			}else if(type=="读json"){
				//url.local("读json","json")
				return JSON.parse(localStorage.getItem(key));
			}
		},
		cookie:function(type,key,val,time){
			//储存数据到cookie ------------------------------ 
			//time是过期天数
			if(type=="存单条"){
				//url.cookie("存单条","name","laohu",1)
				var Days = time; 
				var exp = new Date();
				exp.setTime(exp.getTime() + Days*24*60*60*1000);
				document.cookie = key + "="+ escape (val) + ";expires=" + exp.toGMTString();
				return "储存成功！"
			}else if(type=="读单条"){
				//url.cookie("读单条","name")
				var arr,reg=new RegExp("(^| )"+key+"=([^;]*)(;|$)");
				if(arr=document.cookie.match(reg)){
					return unescape(arr[2]);
				}else{
					return null;
				}
			}else if(type=="删单条"){
				//url.cookie("删单条","name")
				var exp = new Date();
				exp.setTime(exp.getTime() - 1);
				var cval = "";
				//先读取一下cookie看有没有值
				var arr,reg=new RegExp("(^| )"+key+"=([^;]*)(;|$)");
				if(arr=document.cookie.match(reg)){
					cval =  unescape(arr[2]);
				}
				if(cval!=null){
					document.cookie= key + "="+cval+";expires="+exp.toGMTString();
					return "删除单条成功！"
				}
				
			}else if(type=="存json"){
				// var json = {
				// 	name:"laohu",
				// 	age:27
				// }
				//url.cookie("存json","name",json,1)
				var data = JSON.stringify(val);
				var Days = time;
				var exp = new Date();
				exp.setTime(exp.getTime() + Days*24*60*60*1000);
				document.cookie = key + "="+ escape (data) + ";expires=" + exp.toGMTString();
				return "储存json成功！"
			}else if(type=="读json"){
				//url.cookie("读json","name")
				var arr,reg=new RegExp("(^| )"+key+"=([^;]*)(;|$)");
				if(arr=document.cookie.match(reg)){
					var data = unescape(arr[2]);
					return JSON.parse(data);
				}else{
					return null;
				}
			}
		}
	},
	//05.常用日期方法 ------------------------------
	time:{
		sjc:function(type,timecode,ws){
			//时间戳操作 ------------------------------ 
			if(type=="当前时间戳"){
				//获取当前时刻的时间戳
				//time.sjc("当前时间戳")
				//这个获取到的是13位的时间戳
				return Date.parse(new Date());
			}else if(type=="指定时间"){
				//把一个指定的日期转化成时间戳
				//time.sjc("指定时间","2020-3-20")
				return Date.parse(timecode);
			}else if(type=="时间戳转日期"){
				//把时间戳转化为日期
				//time.sjc("时间戳转日期",1585459894000,13)
				if(ws==13){
					var date = new Date(timecode);//时间戳为13位不需要乘1000 13位是带毫秒的
					var Y = date.getFullYear() + '-';
					var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
					var D = (date.getDate() < 10 ? '0'+date.getDate() : date.getDate()) + ' ';
					var h = (date.getHours() < 10 ? '0'+date.getHours() : date.getHours()) + ':';
					var m = (date.getMinutes() < 10 ? '0'+date.getMinutes() : date.getMinutes()) + ':';
					var s = (date.getSeconds() < 10 ? '0'+date.getSeconds() : date.getSeconds());
					return Y+M+D+h+m+s;
				}else{
					var date = new Date(timecode * 1000);//时间戳为10位需要乘1000 10位不带毫秒 c++和php都是生成的10位时间戳
					var Y = date.getFullYear() + '-';
					var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';
					var D = (date.getDate() < 10 ? '0'+date.getDate() : date.getDate()) + ' ';
					var h = (date.getHours() < 10 ? '0'+date.getHours() : date.getHours()) + ':';
					var m = (date.getMinutes() < 10 ? '0'+date.getMinutes() : date.getMinutes()) + ':';
					var s = (date.getSeconds() < 10 ? '0'+date.getSeconds() : date.getSeconds());
					return Y+M+D+h+m+s;
				}
			}else if(type=="转ios时间戳"){
				// ios无法识别字符串时间中的- 需要转化为2019/1/15这种
				// time.sjc("转ios时间戳","2020-03-29 13:57:01")
				return new Date(timecode.replace(/-/g, '/')).getTime();
			}
		},
		xc:function(startDate,endDate){
			//注意这里的时间传入格式 是本地时间
			//time.xc('2019-1-10 21:30:00','2019-1-10 22:30:00')
			startDate= new Date(startDate);
			endDate = new Date(endDate);
			var diff=endDate.getTime() - startDate.getTime();//时间差的毫秒数 
			//计算出相差天数 
			var days=Math.floor(diff/(24*3600*1000)); 
			//计算出小时数 
			var leave1=diff%(24*3600*1000);//计算天数后剩余的毫秒数 
			var hours=Math.floor(leave1/(3600*1000)); 
			//计算相差分钟数 
			var leave2=leave1%(3600*1000);//计算小时数后剩余的毫秒数 
			var minutes=Math.floor(leave2/(60*1000)); 
			//计算相差秒数 
			var leave3=leave2%(60*1000);//计算分钟数后剩余的毫秒数 
			var seconds=Math.round(leave3/1000); 
			   
			var returnStr = {
				miao:0,
				fen:0,
				xiaoshi:0,
				tian:0
			}
			returnStr.miao = seconds;
			// var returnStr = seconds + "秒"; 
			if(minutes>0) {
			    returnStr.fen = minutes;
			} 
			if(hours>0) { 
			    returnStr.xiaoshi = hours; 
			} 
			if(days>0) { 
			    returnStr.tian = days; 
			} 
			// if(minutes>0) {
			//     returnStr = minutes + "分" + returnStr; 
			// } 
			// if(hours>0) { 
			//     returnStr = hours + "小时" + returnStr; 
			// } 
			// if(days>0) { 
			//     returnStr = days + "天" + returnStr; 
			// } 
			return returnStr; 
		},
		pd:function(type,startTime,endTime){
			//判断当前日期 ------------------------------
			if(type=="今天星期几"){
				//判断当前时间是星期几
				var a = ["日", "一", "二", "三", "四", "五", "六"];
				var week = new Date().getDay();
				var str = "今天是星期"+ a[week];
				return str;
			}else if(type=="日期是否跨年"){
				// 注意这里要传入10位的时间戳
				// time.pd("日期是否跨年",1578585600,1584633600)
				// 如果时间相差跨年 前4位不相等，就把后面得年份显示出来
				var endtime = new Date(parseInt(endTime) * 1000).toJSON().slice(0,4);
				var starttime = new Date(parseInt(startTime) * 1000).toJSON().slice(0,4);
				if(starttime.slice(0,4)==endtime.slice(0,4)){
					//不跨年 返回月+日
					//结果 2020.01.09 - 03.19
					return new Date(parseInt(startTime) * 1000).toJSON().slice(0,10).replace(/-/g,".")+" - "+ new Date(parseInt(endTime) * 1000).toJSON().slice(5,10).replace(/-/g,".")
				}else{
					//跨年 返回年+月+日
					//结果 2019.01.09 - 2020.03.19
					return new Date(parseInt(startTime) * 1000).toJSON().slice(0,10).replace(/-/g,".")+" - "+ new Date(parseInt(endTime) * 1000).toJSON().slice(0,10).replace(/-/g,".")
				}
			}else if(type=="今天是否在两个日期之内"){
				// 今天的时间戳
				var that_day = parseInt(new Date().getTime()/1000);
				// 有效期开始时间
				var stat_dat = parseInt(startTime);
				// 有效期结束时间
				var end_time = parseInt(endTime);
				if(that_day>stat_dat&&that_day<end_time){
					// 在两个日期之内
					return "当前日期在两个日期之内!";
				}else if(stat_dat>that_day){
					// 在两个日期之前
					return "当前时间在两个日期之前!";
				}else{
					// 在两个日期以后
					return "当前时间在两个日期之后!";
				}
			}
		},
		djs1:function(endtime,fun){
			//天时分秒倒计时 ------------------------------
			
			// 使用示例
			// function myfun(d,h,m,s){
			// 	console.log("剩余时间："+ d +"天"+ h +"小时"+ m +"分钟"+ s +"秒");
			// }
			// time.djs1("2020-3-29 22:10:00",myfun)
			// var timeid = setInterval("time.djs1('2020-3-29 22:10:00',myfun)",1000);
			
			// 注意这里的endtime格式 2019-12-20 22:38:59
			var date = new Date();
			var now = date.getTime();
			var endDate = new Date(endtime);
			var end = endDate.getTime();
			var leftTime = end-now;
			var d,h,m,s;
			if (leftTime>=0) {
				d = Math.floor(leftTime/1000/60/60/24);
				h = Math.floor(leftTime/1000/60/60%24);
				m = Math.floor(leftTime/1000/60%60);
				s = Math.floor(leftTime/1000%60);
				//把剩余时间的天，时，分，秒传入你自己的function
				fun(d,h,m,s);
			}else{
				d = 0;
				h = 0;
				m = 0;
				s = 0;
				clearInterval(timeid)
			}
		},
		djs2:function(myfun){
			//常用10秒倒计时 ------------------------------
			//调用方法
			// function myfun(num){
			// 	console.log("剩余时间："+num+"秒");
			// }
			// time.djs2(myfun)
			
			var num=10;
			var interval=setInterval(function(){
				if(num==1){
					clearInterval(interval);
				}else{
					num--;
					myfun(num);
				}
			},1000);
		}
	},
	//06.常用验证方法 ------------------------------
	yz:{
		kong:function(val){
			// 非空验证
			// 去掉文字前后的空格
		　　if(val.trim(val).length == 0){
		　　　　return false;
		　　}else{
		　　　　return true;
		　　}
		},
		phone:function(number){
			// 验证手机号
			// console.log(yz.phone("15531222339"));
			var reg = /^[1][0-9]{10}$/;
			return reg.test(number);
		},
		sfz:function(val){
			//验证身份证
			//yz.sfz(123)
			var ext = /(^\d{15}&)|(^\d{18})|(^\d{17}(\d|X|x)$)/;
			return ext.test(val);
		},
		email:function(email){
			// 验证邮箱
			// console.log(yz.email("381332123@qq.com"));
			var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
			return reg.test(email);
		},
		isAllNumber:function(number){
			//验证是否全部是数字
			//yz.isAllNumber("123")
			//注意：故意限制了0321这种格式，如不需要，直接reg=/^\d+$/;
			var reg=/^[1-9]\d*$|^0$/; 
			//如果小数也算纯数字，修改reg正则表达式为：
			//var reg = /^\d+(\.\d+)?$/;
			if(reg.test(number)==true){
				return true;
			}else{
				return false;
			}
		},
		isAllen:function(val){
			//验证是否为全英文
			//yz.isAllen("aaa")
			var ext = /(^[a-zA-Z]+$)/;
			return ext.test(val);
		},
		isAllcn:function(val){
			//验证是否为全汉字
			//yz.isAllcn("aaa")
			var reg=/^[\u0391-\uFFE5]+$/;
			if(val!=""&&!reg.test(val)){
				return false; 
			}else{
				return true; 
			}
		},
		isTime:function(val){
			//判断是否为日期格式
			//yz.isTime("2020-11-01")
			var dateFormat =/^([1-9]\d{3})-(\d{2})-(\d{2})$/;
			return dateFormat.test(val)
		},
		pass1:function(pass){
			//验证密码复杂程度
			//1.密码中必须包含大小写字母、数字、特称字符，至少8个字符，最多30个字符；
			//console.log(yz.pass1("Az152_122"));
			var pwdRegex = new RegExp('(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[^a-zA-Z0-9]).{8,30}');
			if (!pwdRegex.test(pass)) {
				return false;
				//alert("您的密码复杂度太低（密码中必须包含大小写字母、数字、特殊字符），请及时修改密码！");
			}else{
				return true;
			}
		},
		pass2:function(pass){
			//2.密码中必须包含字母（不区分大小写）、数字、特称字符，至少8个字符，最多30个字符；
			//yz.pass2("aa11122#563")
			var pwdRegex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8,30}');
			if (!pwdRegex.test(pass)) {
				return false;
				//alert("您的密码复杂度太低（密码中必须包含字母、数字、特殊字符），请及时修改密码！");
			}else{
				return true;
			}
		},
		pass3:function(pass){
			var pwdRegex = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z]).{8,30}');
			//yz.pass3("aa11122563")
			if (!pwdRegex.test(pass)) {
				return false;
				//alert("您的密码复杂度太低（密码中必须包含字母、数字），请及时修改密码！");
			}else{
				return true;
			}
		}
	}
}
export default long;